import { defineConfig }  from "vite"
import postcssPresetEnv from 'postcss-preset-env';
// import viteAliases from 'vite-aliases'
import { viteMockServe } from "vite-plugin-mock";
import path from 'path'
export default defineConfig({
    base:'/',
    resolve:{
      alias:{//定义别名
        "@":path.resolve(__dirname,'./assets')
      }
    },
    optimizeDeps:{
        exclude:[],//排除不进行预购建的依赖
    },
    envPrefix:"ENV_",//配置vite注入环境变量的校验的前缀
    css:{//对css进行配置
      //module之后会丢给postcss
      modules:{//是对css模块化的默认行为进行覆盖
          localsConvention:'camelCase',//修改生成的映射对象类名key的格式，
          scopeBehaviour:'local',//模块化还是全局
        //   generateScopedName:'[name]-[local]-[hash:5]'//模块化后类名的格式
        generateScopedName:(name,filename,css)=>{//name:css中的类名filename:绝对路径css:文件中的内容
            return `${name}_`//自定义
        },
        hashPrefix:'hello',//参与hash计算,
        globalModulePaths:[]//不想参与到css模块化的配置
      },
      preprocessorOptions:{//key + value
        less:{//整个配置的对象都会最终给到less的执行参数中（全局参数）中去
          //在webpack里就给less-loader去配置好了
          math:"always",
          globalVars:{//全局变量 
            mainColor:'red', 
          }
        },
        sass:{

        }
    },
    devSourceMap:true, //开启css的sourceMap
    postcss:{
        plugins:[postcssPresetEnv({})]
    }
    },
    build:{//构建生产包时的一些策略
      rollupOptions:{//配置rollup的一些策略
        output:{//控制输出,ext：文件类型占位符，name:文件名 hash:通过文件名和文件类型进行组合计算得来的结果
           assetFileNames:"[hash].[name].[ext]"
        }
      },
      assetsInlineLimit:4096,//4kb,图片资源大于4kb打包成图片资源，小于打包成base64
      outDir:'dist',//打包后的文件名
      assetsDir:'static',//配置静态资源目录
      emptyOutDir:true,//默认清除输出目录中的所有文件
    },
    plugins:[
      // viteAliases()
      viteMockServe()
    ],
})